package day08

import kotlin.math.absoluteValue

/**
 * 类的初始化
 *  构造函数
 *  在类中定义一个主构造函数，使用临时变量为class的各个属性提供初始值，在kotlin中，为便于识别，临时变量（包括仅引用一次的参数）
 *  通常都会以下划线开头的名字命名
 *
 *  /Users/dingchenglei/Documents/工程项目/music_travel
 */
fun main() {

    val player = Player("jarry", 19, 0, true)
//    player.name = "rose"
    println(player.name)
}

/**
 * 主构造函数
 *  临时变量用下划线   _name
 */
class Player(
    _name:String,
    _age:Int,
    _sex:Int,
    _isNormal:Boolean

){
    //属性策略
    var name = _name
        get() = field.capitalize()
        private set(value) {
            field = value.trim()
        }
    var age = _age
        get() = age.absoluteValue
        set(value) {
            field = value.absoluteValue
        }
//        get() = field.toInt()
//        set(value) {
//            field = value.toInt()
//        }
    var sex = _sex
    var isNormal = _isNormal

}

